package Testdmol2;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:周次煜
 * Testdmo1.Date: 2024-02-21
 * Time：22:48
 */
public class J2_21 {
    public  static  int fun1(int x) {
        if (x<10) {
            return x;
        }




        return  fun1(x/10)+x%10;
    }

    public static void main20(String[] args) {
        int ret =fun1(845);
        System.out.println(ret);
    }


    public static void main21(String[] args) {

        int a=10;
        int b=20;

        int c=a+b;
        boolean d= a<b;
    }

    public static void main22(String[] args) {
        int a = 20;
        int b = 10;

        System.out.println(a + b); // 30

        System.out.println(a - b); // 10

        System.out.println(a * b); // 200

        System.out.println(a / b); // 2

        System.out.println(a % b); // 0 --->模运算相当于数学中除法的余数
    }


    public static void main23(String[] args) {

        int a = 3;
        int b = 2;

        // 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整，即小数点之后全部舍弃掉了
        System.out.println(a / b);

        // 如果要得到数学中的结果，可以使用如下方式
        double d = a*1.0 / b;

        System.out.println(d);
    }

    public static void main24(String[] args) {
        double a = 1.0;
        int b = 0;
        System.out.println(a / b);
    }

    //数组初始化实操
    public static void main25(String[] args) {

//            初始化时不可指定长度
        int []arr={1,2,3,4,5};
        for (int i = 0; i < arr.length ; i++) {
            System.out.println(arr[i]);
        }

        String [] str={"ab","cd","ofke"};
        for (int i = 0; i < str.length; i++) {
            System.out.println(str[i]);
        }

        // ps 为空指针不能访问
        int []ps=null;

        // 非法访问
//        ps[1]=1;


//        new 一个新的对象
//        结构体对象
        int [] att =new int[6] ;
        // 给的是一个加工后的地址
        System.out.println(att);

//        初始化为 0
        for (int i = 0; i < att.length; i++) {
            System.out.println(att[i]);
        }
    }

//    在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果

    //    方法的重载
//    重载两整数之和
    public static int func(int x,int y){
        return x+y;
    }

    //    重载三小数之后
    public static double func(double x,double y,double z) {
        return x+y+z;
    }

    public static void main26(String[] args) {
        System.out.println(func(1,9));
        System.out.println(func(1.6,9.7,3.5));
    }

//    在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值？

    //    重载两个整数的最大值
    public static int func1(int x,int y){

        return  x>y?x:y;

    }

    // 重载一个三个小数的最大值
    public static double func2(double x,double y,double z){
        if (x>y){
            if (x>z){
                return x;
            }else {
                return z;
            }
        }else {
            if (y>z){
                return y;
            }else {
                return z;
            }

        }

    }
    public static void main27(String[] args) {
//            new  一个输入对象
        Scanner in =new Scanner(System.in);
        int a= in.nextInt();
        int b= in.nextInt();
        System.out.println(func1(a,b));
        double m= in.nextDouble();
        double n= in.nextDouble();
        double t= in.nextDouble();
        System.out.println(func2(m,n,t));
    }

    //    递归求 N 的阶乘
//    递归求 1 + 2 + 3 + ... + 10
    public static int func3(int n){
        if (n==1){
            return 1;
        }
        return n*func3(n-1);
    }

    public static void main28(String[] args) {

        Scanner in =new Scanner(System.in);
        int m= in.nextInt();
        System.out.println(func2(m));
    }

    public static int func2(int t){
        if (t==1){
            return 1;
        }
        return (t + func2(t-1));
    }
    public static void main29(String[] args) {
        System.out.println(func2(5));
    }

    //    按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)    （递归）
    public static void func6(int n ){
        if (n<9){
            System.out.println(n);
            return;
        }

        func6(n/10);
        System.out.println(n%10);

    }

    public static void main30(String[] args) {

        func6(1234);
    }

    //    写一个递归方法，输入一个非负整数，返回组成它的数字之和
    public static int func7(int x){
        if (x<10){
            return x;
        }

        return x%10+func7(x/10);
    }
    public static void main31(String[] args) {
        int ret=func7(7486);
        System.out.println(ret);
    }
//    递归求斐波那契数列的第 N 项

    //    1 1 2 3 5 8 13 21
    public static int func9(int n){
        if (n==1 || n==2){
            return 1;
        }
        return func9(n-1)+func9(n-2);
    }
    public static void main32(String[] args) {
        Scanner in =new Scanner(System.in);
        int i= in.nextInt();
        int ret=func9(i);
        System.out.println(ret);
    }
}
